(in-package :TRAPS)
; Generated from #P"macintosh-hd:hd3:CInterface Translator:Source Interfaces:kdebug.h"
; at Sunday July 2,2006 7:29:55 pm.
; 
;  * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
;  *
;  * @APPLE_LICENSE_HEADER_START@
;  * 
;  * The contents of this file constitute Original Code as defined in and
;  * are subject to the Apple Public Source License Version 1.1 (the
;  * "License").  You may not use this file except in compliance with the
;  * License.  Please obtain a copy of the License at
;  * http://www.apple.com/publicsource and read it before using this file.
;  * 
;  * This Original Code and all software distributed under the License are
;  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
;  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
;  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
;  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
;  * License for the specific language governing rights and limitations
;  * under the License.
;  * 
;  * @APPLE_LICENSE_HEADER_END@
;  
;  	Copyright (c) 1997 Apple Computer, Inc.  All rights reserved. 
;  *
;  * kdebug.h -   kernel_debug definitions
;  *
;  
; #ifndef BSD_SYS_KDEBUG_H
; #define BSD_SYS_KDEBUG_H

(require-interface "sys/appleapiopts")

(require-interface "sys/cdefs")
; #ifdef __APPLE_API_UNSTABLE
#| #|

#include <machclock_types.h>
#include <stdint.h>
#ifdefined(KERNEL_BUILD)
#include <kdebug.h>
#endif


#define DBG_ZERO_FILL_FAULT   1
#define DBG_PAGEIN_FAULT      2
#define DBG_COW_FAULT         3
#define DBG_CACHE_HIT_FAULT   4





#define DBG_FUNC_START		1
#define DBG_FUNC_END		2
#define DBG_FUNC_NONE		0



#define DBG_MACH		1
#define DBG_NETWORK		2	
#define DBG_FSYSTEM		3
#define DBG_BSD			4
#define DBG_IOKIT		5
#define DBG_DRIVERS		6
#define DBG_TRACE               7
#define DBG_DLIL	        8
#define DBG_MISC		20
#define DBG_DYLD                31
#define DBG_QT                  32
#define DBG_MIG			255


#define DBG_MACH_EXCP_DFLT	0x03	
#define DBG_MACH_EXCP_IFLT	0x04	
#define DBG_MACH_EXCP_INTR	0x05	
#define DBG_MACH_EXCP_ALNG	0x06	
#define DBG_MACH_EXCP_TRAP	0x07	
#define DBG_MACH_EXCP_FP	0x08	
#define DBG_MACH_EXCP_DECI	0x09	
#define DBG_MACH_EXCP_SC	0x0C	
#define DBG_MACH_EXCP_TRACE	0x0D	
#define DBG_MACH_EXCP_EMUL	0x0E	
#define DBG_MACH_IHDLR		0x10	
#define DBG_MACH_IPC		0x20	
#define DBG_MACH_VM		0x30	
#define DBG_MACH_SCHED		0x40	
#define DBG_MACH_MSGID_INVALID	0x50	

     
#define MACH_SCHED              0x0     
#define MACH_STACK_ATTACH       0x1     
#define MACH_STACK_HANDOFF      0x2     
#define MACH_CALL_CONT          0x3     
#define MACH_CALLOUT            0x4     
#define MACH_STACK_DETACH       0x5
#define MACH_MAKE_RUNNABLE      0x6     
#define MACH_PROMOTE			0x7		
#define MACH_DEMOTE				0x8		
#define MACH_PREBLOCK_MUTEX		0x9		


#define DBG_NETIP	1	
#define DBG_NETARP	2	
#define DBG_NETUDP	3	
#define DBG_NETTCP	4	
#define DBG_NETICMP	5	
#define DBG_NETIGMP	6	
#define DBG_NETRIP	7	
#define DBG_NETOSPF	8	
#define DBG_NETISIS	9	
#define DBG_NETSNMP	10	
#define DBG_NETSOCK	11	


#define DBG_NETAARP	100	
#define DBG_NETDDP	101	
#define DBG_NETNBP	102	
#define DBG_NETZIP	103	
#define DBG_NETADSP	104	
#define DBG_NETATP	105	
#define DBG_NETASP	106	
#define DBG_NETAFP	107	
#define DBG_NETRTMP	108	
#define DBG_NETAURP	109	
#define DBG_NETIPSEC	128	


#define DBG_IOSCSI	1	
#define DBG_IODISK	2	
#define DBG_IONETWORK	3	
#define DBG_IOKEYBOARD	4	
#define DBG_IOPOINTING	5	
#define DBG_IOAUDIO	6	
#define DBG_IOFLOPPY	7	
#define DBG_IOSERIAL	8	
#define DBG_IOTTY	9	
#define DBG_IOWORKLOOP	10	
#define DBG_IOINTES	11	
#define DBG_IOCLKES	12	
#define DBG_IOCMDQ	13	
#define DBG_IOMCURS	14	
#define DBG_IOMDESC	15	
#define DBG_IOPOWER	16	


#define DBG_DRVSCSI	1	
#define DBG_DRVDISK	2	
#define DBG_DRVNETWORK	3	
#define DBG_DRVKEYBOARD	4	
#define DBG_DRVPOINTING	5	
#define DBG_DRVAUDIO	6	
#define DBG_DRVFLOPPY	7	
#define DBG_DRVSERIAL	8	
#define DBG_DRVSPLT     9


#define DBG_DLIL_STATIC 1       
#define DBG_DLIL_PR_MOD 2       
#define DBG_DLIL_IF_MOD 3       
#define DBG_DLIL_PR_FLT 4       
#define DBG_DLIL_IF_FLT 5       


#define DBG_FSRW      1       
#define DBG_DKRW      2       
#define DBG_FSVN      3       
#define DBG_FSLOOOKUP 4       


#define DBG_BSD_EXCP_SC	0x0C	
#define DBG_BSD_AIO		0x0D	
#define DBG_BSD_SC_EXTENDED_INFO 0x0E    


#define DBG_TRACE_DATA      0
#define DBG_TRACE_STRING    1


#define DBG_DYLD_STRING   5


#define DKIO_DONE 	0x01
#define DKIO_READ	0x02
#define DKIO_ASYNC	0x04
#define DKIO_META	0x08
#define DKIO_PAGING	0x10



#define KDBG_CODE(Class, SubClass, code) (((Class & 0xff) << 24) | ((SubClass & 0xff) << 16) | ((code & 0x3fff)  << 2))

#define KDBG_MIGCODE(msgid) ((DBG_MIG << 24) | (((msgid) & 0x3fffff)  << 2))

#define MACHDBG_CODE(SubClass, code) KDBG_CODE(DBG_MACH, SubClass, code)
#define NETDBG_CODE(SubClass, code) KDBG_CODE(DBG_NETWORK, SubClass, code)
#define FSDBG_CODE(SubClass, code) KDBG_CODE(DBG_FSYSTEM, SubClass, code)
#define BSDDBG_CODE(SubClass, code) KDBG_CODE(DBG_BSD, SubClass, code)
#define IOKDBG_CODE(SubClass, code) KDBG_CODE(DBG_IOKIT, SubClass, code)
#define DRVDBG_CODE(SubClass, code) KDBG_CODE(DBG_DRIVERS, SubClass, code)
#define TRACEDBG_CODE(SubClass,code) KDBG_CODE(DBG_TRACE, SubClass, code)
#define MISCDBG_CODE(SubClass,code) KDBG_CODE(DBG_MISC, SubClass, code)
#define DLILDBG_CODE(SubClass,code) KDBG_CODE(DBG_DLIL, SubClass, code)
#define DYLDDBG_CODE(SubClass,code) KDBG_CODE(DBG_DYLD, SubClass, code)
#define QTDBG_CODE(SubClass,code) KDBG_CODE(DBG_QT, SubClass, code)



extern unsigned int kdebug_enable;
#define KDEBUG_ENABLE_TRACE   0x1
#define KDEBUG_ENABLE_ENTROPY 0x2
#define KDEBUG_ENABLE_CHUD    0x4

#define KERNEL_DEBUG_CONSTANT(x,a,b,c,d,e)    \
do {					\
    if (kdebug_enable)			\
        kernel_debug(x,a,b,c,d,e);	\
} while(0)

#define KERNEL_DEBUG_CONSTANT1(x,a,b,c,d,e)    \
do {					\
    if (kdebug_enable)			\
        kernel_debug1(x,a,b,c,d,e);	\
} while(0)

extern void kernel_debug(unsigned int debugid, unsigned int arg1, unsigned int arg2, unsigned int arg3,  unsigned int arg4, unsigned int arg5);

extern void kernel_debug1(unsigned int debugid, unsigned int arg1, unsigned int arg2, unsigned int arg3,  unsigned int arg4, unsigned int arg5);

#ifKDEBUG

#define KERNEL_DEBUG(x,a,b,c,d,e)	\
do {					\
    if (kdebug_enable)			\
        kernel_debug(x,a,b,c,d,e);	\
} while(0)

#define KERNEL_DEBUG1(x,a,b,c,d,e)	\
do {					\
    if (kdebug_enable)			\
        kernel_debug1(x,a,b,c,d,e);	\
} while(0)

#else
#define KERNEL_DEBUG(x,a,b,c,d,e)
#define KERNEL_DEBUG1(x,a,b,c,d,e)

#endif
#endif
|#
 |#
;  __APPLE_API_UNSTABLE 
; #ifdef KERNEL_PRIVATE
#| #|
#ifdef__APPLE_API_PRIVATE


typedef struct {
uint64_t	timestamp;
unsigned int	arg1;
unsigned int	arg2;
unsigned int	arg3;
unsigned int	arg4;
unsigned int	arg5;       
unsigned int	debugid;
} kd_buf;

#define KDBG_THREAD_MASK 0x7fffffff
#define KDBG_CPU_MASK    0x80000000


#define KDBG_INIT	0x1
#define KDBG_NOWRAP	0x2
#define KDBG_FREERUN	0x4
#define KDBG_WRAPPED	0x8
#define KDBG_USERFLAGS	(KDBG_FREERUN|KDBG_NOWRAP|KDBG_INIT)
#define KDBG_PIDCHECK   0x10
#define KDBG_MAPINIT    0x20
#define KDBG_PIDEXCLUDE 0x40

typedef struct {
	unsigned int	type;
	unsigned int	value1;
	unsigned int	value2;
	unsigned int	value3;
	unsigned int	value4;
	
} kd_regtype;

typedef struct
{
    int nkdbufs;
    int nolog;
    int flags;
    int nkdthreads;
    int bufid;
} kbufinfo_t;

typedef struct
{
  unsigned int thread;
  int          valid;
  char         command[20];
} kd_threadmap;

#define KDBG_CLASSTYPE		0x10000
#define KDBG_SUBCLSTYPE		0x20000
#define KDBG_RANGETYPE		0x40000
#define KDBG_TYPENONE		0x80000
#define KDBG_CKTYPES		0xF0000

#define KDBG_RANGECHECK	0x100000
#define KDBG_VALCHECK	0x200000        

#define KDBG_BUFINIT	0x80000000


#define KDBG_EFLAGS	1
#define KDBG_DFLAGS	2
#define KDBG_ENABLE	3
#define KDBG_SETNUMBUF	4
#define KDBG_GETNUMBUF	5
#define KDBG_SETUP	6
#define KDBG_REMOVE	7
#define KDBG_SETREGCODE	8
#define KDBG_GETREGCODE	9
#define KDBG_READTRACE	10
#define KDBG_PIDTR      11
#define KDBG_THRMAP     12
#define KDBG_PIDEX      14
#define KDBG_SETRTCDEC  15
#define KDBG_KDGETENTROPY 16


#define KDBG_MINRTCDEC  2500



#define PCSAMPLE_DISABLE   1
#define PCSAMPLE_SETNUMBUF 2
#define PCSAMPLE_GETNUMBUF 3
#define PCSAMPLE_SETUP	   4
#define PCSAMPLE_REMOVE	   5
#define PCSAMPLE_READBUF   6
#define PCSAMPLE_SETREG    7
#define PCSAMPLE_COMM      8

#define MAX_PCSAMPLES    1000000     


extern unsigned int pcsample_enable;

typedef struct
{
    int npcbufs;
    int bufsize;
    int enable;
    unsigned long pcsample_beg;
    unsigned long pcsample_end;
} pcinfo_t;

#endif
#endif
|#
 |#
;  KERNEL_PRIVATE 

; #endif /* !BSD_SYS_KDEBUG_H */


(provide-interface "kdebug")